import * as Cesium from "cesium/Cesium";
// viewer 在window 对象上 地图初始化的时候产生
class DrawMap {
  constructor() {}
  // 根据类型获取颜色
  getColorByType(area_type) {
    // Cesium.Color.WHITE：白色
    // Cesium.Color.BLACK：黑色
    // Cesium.Color.RED：红色
    // Cesium.Color.GREEN：绿色
    // Cesium.Color.BLUE：蓝色
    // Cesium.Color.YELLOW：黄色
    // Cesium.Color.CYAN：青色
    // Cesium.Color.MAGENTA：品红色
    // Cesium.Color.GRAY：灰色
    // Cesium.Color.LIGHTGRAY：浅灰色
    // Cesium.Color.DARKGRAY：深灰色
    const colorConfig = [
      {
        area_type: "热点区域",
        color: Cesium.Color.RED, //  红色
      },
      {
        area_type: "演习",
        color: Cesium.Color.BLUE,
      },
      {
        area_type: "挑衅",
        color: Cesium.Color.YELLOW,
      },
      {
        area_type: "基地",
        color: Cesium.Color.GREEN, // 棕色
      },
      {
        area_type: "补给",
        color: Cesium.Color.BURLYWOOD,
      },
      {
        area_type: "其他",
        color: Cesium.Color.DARKGRAY,
      },
    ];
    const item = colorConfig.find((item) => item.area_type === area_type);
    return item ? item.color : Cesium.Color.DARKGRAY;
  }
  // 绘制圆形
  drawCircle(arr) {
    const circles = [];
    for (const item of arr) {
      circles.push({
        center: Cesium.Cartesian3.fromDegrees(
          item.coordinare[0],
          item.coordinare[1]
        ),
        radius: item.scale,
        material: this.getColorByType(item.area_type),
        name: item.name,
      });
    }

    // 绘制圆型
    for (const item of circles) {
      viewer.entities.add({
        name: item.name,
        position: item.center,
        ellipse: {
          semiMinorAxis: item.radius,
          semiMajorAxis: item.radius,
          material: item.material,
        },
      });
    }
  }
  // 绘制点和线
  drawPointAndLine(pointList, imgObj) {
    const { whiteCircle, blueShip } = imgObj;
    console.log("获取到的数据");
    console.log(pointList);
    for (let i = 0; i < pointList.length - 1; i++) {
      viewer.entities.add({
        name: "航迹坐标点",
        position: Cesium.Cartesian3.fromDegrees(
          pointList[i][0],
          pointList[i][1]
        ),
        billboard: {
          //图标
          image: i === 0 ? blueShip : whiteCircle,
          width: i === 0 ? 29 : 10,
          height: i === 0 ? 29 : 10,
        },
      });
      viewer.entities.add({
        name: "航迹线",
        polyline: {
          positions: Cesium.Cartesian3.fromDegreesArray([
            pointList[i][0],
            pointList[i][1],
            pointList[i + 1][0],
            pointList[i + 1][1],
          ]),
          arcType: Cesium.ArcType.RHUMB,
          width: 8,
          material: new Cesium.PolylineArrowMaterialProperty(
            Cesium.Color.fromCssColorString("#888888")
          ),
        },
        attribute: {
          id: pointList[i],
        },
      });
    }
    // viewer.entities.add({
    //   name: "开源数据点",
    //   position: Cesium.Cartesian3.fromDegrees(
    //     pointList[pointList.length - 1][0],
    //     pointList[pointList.length - 1][1]
    //   ),
    //   billboard: {
    //     //图标
    //     image: blueShip,
    //     width: 29,
    //     height: 29,
    //     // rotation: pointList[pointList.length - 1].track,
    //   },
    // });
  }
}

export default DrawMap;
